This invention relates to computer database systems, and more particularly to a language for a method of making changes to a definition of a relational database system.
A database system operating in an environment such as that provided by IBM's DATABASE 2 (DB2) computer software system commonly takes the form of a relational database product which appears to a user as a set of user-defined tables. A table is a set of columns and rows, where each column has a user-selected name and datatype, and each row is a record of data values entered for the columns. This type of database product, when fully developed and operating on a computer, includes a catalog (or dictionary) which defines these tables, as well as indexes and views of the tables, and relationships between them, plus the data itself entered by users. A structured query language, referred to as SQL, is employed to access the data, and is also used to define the form of the database, i.e., describe the tables, and describe indexes and views of the tables and other objects of the database. This structured query language is a high level programming language specifically designed for the database product, and permits a user to access or define elements without resort to a lower-level language or assembly. The statements of SQL are limited, however, and so other programming tools and languages are used, particularly in design and development phases of application definition.
After such a database system has been initially developed (e.g., by a DB2 customer's in-house programmers), the system is frequently subjected to an on-going series of changes as it is upgraded, debugged, expanded, etc. A commercially-available product useful for generating these changes is a product called "DB2 ALTER," sold by BMC Software, Inc., the assignee of this invention; this product functions to allow a user to describe changes in an interactive way (at a terminal), then these changes are implemented by using SQL to make changes in the database definition itself. Generally, a product such as DB2 ALTER effects changes by producing a sequence of operations expressed in SQL and other functional languages for unloading a database, wiping out (dropping) a part of the catalog, rebuilding a new part of the catalog to replace that which was dropped, then restructuring the data according to the revised catalog. Commercially available products providing features analogous to DB2 ALTER include RC MIGRATE, by Platinum Technology of Lombard, Ill., PROALTER PLUS by On-Line Software of Fort Lee, N.J., TRANSRELATE by Compuware, and a product made by Goal Systems International of Columbus, Ohio.
A database system for a particular application may be created and debugged by separate teams of programmers in a large organization, and these teams may use incompatible tools. A design team makes an initial design, often employing a computer-aided software engineering (CASE) tool, (for example, a commercially-available Bachman tool) and the database definition is passed on in the form of a set of SQL statements to a development team which has the responsibility of generating a production version of the database. The development team, in changing the definition for more fully tailoring the application to the customer's intent, may employ a different tool, such as DB2 ALTER, or another programming language, for its own efficiency or convenience. The developers may then turn the revised version of the database over to a testing facility, where testing and debugging result in additional changes; these changes may be implemented again in DB2 ALTER. Finally, the database is released to production use, and the team which maintains the software for the production operation may make performance-enhancing changes in the way the data is physically stored, and other changes as a result of factors discovered by day-to-day users entering data or evaluating reports generated by the database system. Meanwhile, the design team is generating updated versions of the system, adding features and incorporating changes as a result of changes in the business, hardware additions, etc., and these updated versions pass through the same series of phases--development, test and production. The downstream phases must employ the updated, revised version of the system, but yet will want to keep the revisions they have made in the previous version. All of the changes made at any phase must therefore be migrated forward to downstream users, and often also fed back to earlier phases, and this must be done in an efficient manner.
Since the design and development people are often using design tools and languages in generating the database definition, which may be different from that of the production-level programmers, and the definition and changes must be implemented in a specific mechanism such as SQL for IBM DB2, a problem has existed in passing changes from design and development to production, and integrating production-level changes into a design and development environment. Only by extensive hand-entry of change lists, and comparisons of lengthy descriptions, have these types of interaction been achievable.